IOS 里的一些小玩意和细节


<!–markdown–>#EdgeInsets

API文档对其的描述是:
// specify amount to inset (positive) for each of the edges. values can be negative to 'outset'
渣翻:指定一定数量的偏移,到容器的边缘,值可以是为负值。
类似于 css中的 padding,却又比padding强大得多,利用他可以给button作一些神奇的布局,可惜目前我只在uibutton上看到过。
妖寿啦~图片出来啦
<p><!–more–></p>

#关于NSSet 和NSOrderSet

NSSet是个不可变无序的唯一的对象集合,这里的唯一比较基于值,而非内存地址,很好奇内部是如何实现两个对象快速比较值。

最大的优点: 速度比nsarray快得快, 类似于hash.

NSOrderSet 是NSSet 和NSArray的集合体,他可以使用objectAtIndex之类的方法,但是子对象依然要求唯一。

官方说 NSOrderSet拥有比NSSet还要快的性能(变态...),但是我个人测试了一下,100W条简单对象(1-100W,字符对象)的情况下,取10次平均值,环境是虚拟机。
    NSOrderSet 拥有 比NSSet快得快的多的遍历速度。 平均 NSOrderSet3倍于NSset
    NSOrderSet的添加子对象速度要稍慢于NSset,大约是130~150%左右。

#关于UIWebView加载内容不释放内存

UIWebView使用loadRequest 加载内容时经常会造成内存无法释放,即使UIWebView自身已经销毁或者重新load一个空的内容进去。

只要使用 loadData 方法就能解决上面这个问题,在不需要用到这个内容的时候将NSData=nil.然后uiwebView loadHTMLString @""空内容,就可以马上清空掉所占内容,在data=nil的瞬间。<font color='red'>我果然很聪明</font>

#UIWebView滚动时隐藏头部和脚部黑块

UIwebView在滚动时在顶部和脚部会有一块 黑色渐变矩形,显得巨丑。在ios7以后可以通过设置uiwebView.backgroundColor或uiwebView.scrollView.backgroundColor设置背景色遮盖。在ios7以下版本可以通过添加像 uitableView 类似的 上拉刷新View,和下拉刷新View这种方式来隐藏.但是,添加底部的空白view时,我们需要知道内容页的高度,所以只能在UIwebView didLoadFinsh 时通过javascript脚本去获取高度之后再设置 底部的空白view

NSString *height_str= [webView stringByEvaluatingJavaScriptFromString: @&#34;document.body.offsetHeight&#34;];
    int height1 = [height_str intValue]+17;
    //在ios7以下版本中,无法通过设置 webView.backgroundColor 或 webView.scrollView.backgroundColor 来盖掉背后的黑乎乎,通过添加
    // ’上拉刷新‘ 和‘下拉刷新’ view 来解决这个问题
    if(ISNOTIOS7){
        UIView *headerView=[[UIView alloc] initWithFrame:CGRectMake(0,0-height1, webView.bounds.size.width, height1)];

        headerView.backgroundColor=[UIColor whiteColor];

        UIView *footerView=[[UIView alloc] initWithFrame:CGRectMake(0,height1, webView.bounds.size.width,height1)];

        footerView.backgroundColor=[UIColor whiteColor];

        [webView.scrollView addSubview:headerView];

        [webView.scrollView addSubview:footerView];

    }

#关于Xcode显示空格字符解决方案

在安装了新版的xcode之后,发现代码区出现了很多锯齿状的空格符号,如下图:
QQ截图20140530095255.png
十分烦,解决方案:Editor–> Hide Invisibles

#关于 CocoaPods慢的问题

使用 pod install --verbose --no-repo-update 可以缓解一下,比 pod install 要快些